1. Field of the Invention
The present invention relates to data retrieval in audio, video or audio/video interconnected systems for home or office use and, more particularly, to a system and method for navigating a descriptor hierarchy within such systems.
2. Background
Data retrieval from a high speed serial bus such as an Institute of Electrical and Electronics Engineers (IEEE) 1394 standard serial bus, std 1394-1995, Standard For A High Performance Serial Bus, (Aug. 30, 1996) (hereinafter referred to as the xe2x80x9cIEEE 1394 standard serial busxe2x80x9d) incorporates unnecessary operations and burdens an audio video/control (xe2x80x9cAV/Cxe2x80x9d) protocol that uses the IEEE 1394 standard serial bus. One illustration of this problem relates to the IEEE 1394 standard serial bus that uses a controller device to navigate a descriptor hierarchy in a target device (also referred to herein as a data structure hierarchy) and the controller sends a command to, for example, a descriptor to open. An AV/C controller (xe2x80x9ccontrollerxe2x80x9d) is a device at a serial bus node that sends AV/C commands to control a remote AV/C device. A target""s descriptor (xe2x80x9ctargetxe2x80x9d) has defined fields used for sharing device information and which may be modified by any device. When navigating a descriptor hierarchy, a controller, using conventional AV/C commands, opens and reads a descriptor on a target device containing information. This information may pertain, for example, to a destination file.
Navigating a descriptor hierarchy involves a controller opening and reading descriptors that are arranged in a hierarchical format. Descriptors in a descriptor hierarchy may be read in a forward or in a backward approach. A forward approach involves opening and reading a descriptor to determine the next descriptor to open. A conventional backward approach generally involves the controller memorizing the descriptors it has opened, and reversing the forward navigation path.
To navigate descriptors, the controller sends an OPEN DESCRIPTOR command with a descriptor_specifier data structure specifying a list. Entry descriptors within the list may contain information about the next hierarchical list such as its child list. Using the READ DESCRIPTOR command, an entry""s child list identifier (i.e. child_list_ID) is then returned to the controller and the next list which is a level below may be opened. Generally, there are two conventional approaches to refer to an entry descriptor in a list when issuing commands. First, descriptor_specifier 2016 may be used to specify an entry descriptor by the identifier of its list (i.e. list_ID) and then by its entry position. Second, another descriptor specifier such as descriptor_specifier 2116 may be used to specify an entry descriptor by its root list identifier (i.e. root_list_ID), its list_type (i.e. list_type), and then by its object identifier (i.e. object_ID).
There are numerous disadvantages to these conventional approaches. For example, some AV/C subunits on the IEEE 1394 standard serial bus are required to support specific entry descriptors by entry position. Other AV/C subunits are required to support descriptors by an object identifier. Consequently, controllers bear the burden of supporting both types of access methods depending upon the target that it is controlling.
Another disadvantage is that if a controller has access to the list identifier in which the entry exists, the controller is generally required to support specifying that entry by an entry position. Specifying the entry by an entry position can be problematic. For instance, a list generally contains a plurality of entries and if one of the middle entries is deleted, their positions shift. For the purpose of illustration, assume that a list contains five entries. If the third entry position, for example, is deleted, the fourth entry position and the fifth entry position move and become the new third and fourth entry positions. This causes a problem because invalid information may be supplied to a target by a controller that contains the old entry position.
Yet another disadvantage is that if an AV/C target uses the object identifier reference (i.e. a field in the entry that identifies the object for which the entry represents), the AV/C target may also specify an ambiguous entry since object identifiers are unique only within a particular list_type and there may be many lists in the target of the same list_type. This is also problematic since the list is already opened by a list identifier and the AV/C subunit then must support that same list with a redundant specification such as the list_type specification when using object_ID specification.
Another conventional approach for specifying descriptors in a descriptor hierarchy relates to the data that identifies the lists and entries in the descriptor hierarchy for navigation purposes. Presently, if a controller navigates a descriptor hierarchy in order to view hierarchical data, the controller navigates in a forward direction. The controller reads a descriptor and determines if any root lists or child lists exist. The controller may then open those lists. However, these lists typically lack information about their parent descriptor. In order to recall the parent descriptor identifier, the controller must track the descriptors that it has navigated by storing the identifications (xe2x80x9cIDsxe2x80x9d) of the parent entry and child list descriptors within the storage device of the controller. However, other controllers may modify the descriptor hierarchy in a target device at any time causing the first controller to have erroneous data. It is therefore desirable to have a system of navigating a descriptor hierarchy that eliminates the redundancies, ambiguities, complexities and other disadvantages associated with the conventional approaches.
In addition to navigating descriptor hierarchies, conventional systems lack a straightforward way of deleting descriptors in a hierarchy. For example, generally two subfunctions in the WRITE DESCRIPTOR command defined in the AV/C documentation may be used to delete descriptor data. However, these two subfunctions do not account for the hierarchical nature of the descriptor structure. For instance, if the child_list_ID field in an entry is deleted using the WRITE DESCRIPTOR command, there is no indication in the command how the entry""s child_list should be deleted. It is therefore also desirable to have a system and method in a descriptor hierarchy that defines how to delete descriptors under various conditions.
A method is disclosed for coupling a first device and a second device to a bus. Parent descriptor information blocks are placed into a descriptor hierarchy data structure for AV/C devices. The descriptor specifier specifies an entry by a list identifier and an object identifier. Additional features, embodiments, and benefits will be evident in view of the figures and detailed description presented herein.